package com.duoduo.数组;

/**
 * @author dl.chai
 * @version 1.0
 * @description: 最短无序连续子数组581
 * 给你一个整数数组 nums ，你需要找出一个 连续子数组 ，如果对这个子数组进行升序排序，那么整个数组都会变为升序排序。
 *
 * 请你找出符合题意的 最短 子数组，并输出它的长度。
 *
 *
 *
 * 示例 1：
 *
 * 输入：nums = [2,6,4,8,10,9,15]
 * 输出：5
 * 解释：你只需要对 [6, 4, 8, 10, 9] 进行升序排序，那么整个表都会变为升序排序。
 * 示例 2：
 *
 * 输入：nums = [1,2,3,4]
 * 输出：0
 * 示例 3：
 *
 * 输入：nums = [1]
 * 输出：0
 * @date 2023/3/29 20:10
 */

public class 最短无序连续子数组581 {
    int left = -1,right = -1,min = Integer.MAX_VALUE,max = Integer.MIN_VALUE,length;
    public int findUnsortedSubarray(int[] nums) {
        //2, 6, 4, 8, 10, 9, 15
        int left=-1,right=-1;
        int min=Integer.MAX_VALUE,max=Integer.MIN_VALUE;
        //先找right
        for(int i=0;i<nums.length;i++){
            if(nums[i]<max){
                right=i;
            }else{
                max=nums[i];
            }
        }
        //再找left
        for(int i=nums.length-1;i>=0;i--){
            if(nums[i]>min){
                left=i;
            }else{
                min=nums[i];
            }
        }
        return right==-1?0:right-left+1;
    }

    public static void main(String[] args) {
        int unsortedSubarray = new 最短无序连续子数组581().findUnsortedSubarray(new int[]{2, 6, 4, 8, 10, 9, 15});
        System.out.println(unsortedSubarray);
    }
}
